package hanlen.mq.starter.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author <a href="mailto:1067521725@qq.com">yeweidong</a>
 * @version 1.0
 * @Description redis消息队列 有数据持久化能力,消费后消息会自动从存储中删除。 业务处理失败必须将异常抛出去，这样可以转存死性队列(名称=当前队列名_dlq)
 * @date 2015年01月25日
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RedisQueueListener {

    /**
     * 队列名
     * 不需要包含环境和应用前缀
     *
     * @return 队列
     */
    String name();

    /**
     * 是否启用重试
     *
     * @return 重试
     * @see hanlen.mq.starter.core.RedisQueueExportService#overflowPolicy (false时第一次发生异常直接进入,
     * @see hanlen.mq.starter.configuration.properties.HanlenMqProperties （true自动进入${队列名}_dlq对应的死性队列重试)
     */
    boolean retry() default false;

}
